/**
 * 全局模型配置文件
 * 提供统一配置入口
 */

// 安全导入辅助函数
function safeRequire(path) {
  try {
    return require(path);
  } catch (error) {
    console.warn(`模块 ${path} 导入失败: ${error.message}`);
    return null;
  }
}

// 导出日志函数 - 用于调试模型加载问题
function logModelInfo(name, model, isClass = false) {
  if (!model) {
    console.error(`模型 ${name} 加载失败`);
    return;
  }
  
  if (isClass) {
    console.log(`模型类 ${name} 加载成功`);
  } else {
    console.log(`模型实例 ${name} 加载成功`);
  }
}

// 基础模型
const BaseModel = require('../framework/platform/model/base_model.js');
logModelInfo('BaseModel', BaseModel, true);
exports.base_model = BaseModel;

// 管理员模型
const AdminModelClass = safeRequire('../project/oa/model/admin_model.js');
logModelInfo('AdminModelClass', AdminModelClass, true);

// 实例化AdminModel
let AdminModel = null;
try {
  if (AdminModelClass) {
    AdminModel = new AdminModelClass();
    logModelInfo('AdminModel(实例)', AdminModel);
  }
} catch (err) {
  console.error('实例化AdminModel失败:', err);
}
exports.admin_model = AdminModel;

// 日志模型
const LogModelClass = safeRequire('../framework/platform/model/log_model.js');
logModelInfo('LogModelClass', LogModelClass, true);

// 实例化LogModel
let LogModel = null;
try {
  if (LogModelClass) {
    LogModel = new LogModelClass();
    logModelInfo('LogModel(实例)', LogModel);
  }
} catch (err) {
  console.error('实例化LogModel失败:', err);
}
exports.log_model = LogModel;

// 消息模型
const MsgModelClass = safeRequire('../project/oa/model/msg_model.js');
logModelInfo('MsgModelClass', MsgModelClass, true);

// 实例化MsgModel
let MsgModel = null;
try {
  if (MsgModelClass) {
    MsgModel = new MsgModelClass();
    logModelInfo('MsgModel(实例)', MsgModel);
  }
} catch (err) {
  console.error('实例化MsgModel失败:', err);
}
exports.msg_model = MsgModel;

// 新闻模型
const NewsModelClass = safeRequire('../project/oa/model/news_model.js');
logModelInfo('NewsModelClass', NewsModelClass, true);

// 实例化NewsModel
let NewsModel = null;
try {
  if (NewsModelClass) {
    NewsModel = new NewsModelClass();
    logModelInfo('NewsModel(实例)', NewsModel);
  }
} catch (err) {
  console.error('实例化NewsModel失败:', err);
}
exports.news_model = NewsModel;

// 导出所有模型
module.exports = {
  base_model: BaseModel,
  admin_model: AdminModel,
  log_model: LogModel,
  msg_model: MsgModel,
  news_model: NewsModel
}; 